iT邦幫忙

2024 iThome 鐵人賽

DAY 25
0

Boundary Condition Testing

  • 是一種專注於測試系統極端情況的測試方法,這樣可以確保系統在特殊或邊界條件下依然能正常工作。
    1.邊界情況測試類型
    • 時間限制測試:設置了捐款的截止日期。
    • 目標達成測試:測試在達成或未達成目標後的操作行為。
    • 捐款者身份測試:測試不同身份的賬戶是否能進行正確操作。
    • 極限金額測試:使用非常小或非常大的捐款金額,檢查系統是否能正確處理這些金額。
    • 多賬戶交互測試:不同的捐款者同時進行操作,檢查合約是否能正確跟踪每個人的捐款。
      時間限制測試範例
      https://ithelp.ithome.com.tw/upload/images/20241008/20169238IVFA6vouny.png
  • 目標是募集 10 ETH,持續時間設定為 3600 秒(1 小時)。
  • web3.utils.toWei:將 10 ETH 轉換為 wei(智能合約使用的最小單位)。

https://ithelp.ithome.com.tw/upload/images/20241008/20169238mHJbrvxlzL.png

  • time.increase:這是用來模擬區塊鏈時間的函數,這裡將時間增加 3601 秒,超過設定的 1 小時限制。
  • 由於超過時間,合約應該拒絕捐款,並拋出帶有錯誤訊息 Crowdfunding has ended 的異常。
    捐款者身份測試範例
    https://ithelp.ithome.com.tw/upload/images/20241008/20169238g9tiNUdVT1.png
  • contributor 捐款 5 ETH 進入合約,這是為了確保合約內有資金可以提款。
  • 模擬 nonContributor 嘗試執行提款操作,這個帳戶並不是合約擁有者。
    https://ithelp.ithome.com.tw/upload/images/20241008/20169238Rx6dEaExef.png
  • 使用 web3.eth.getBalance(owner) 獲取合約擁有者的 ETH 餘額。
  • 使用 assert 確認提款後擁有者的餘額是否增加,證明提款成功。

上一篇
Web3.js 集成
下一篇
前端交互測試
系列文
區塊鏈技術應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言